/**
 * 
 */
package spring.webapp.anmeldesystem.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import spring.webapp.anmeldesystem.entity.Fachbereich;
import spring.webapp.anmeldesystem.entity.Kurs;
import spring.webapp.anmeldesystem.entity.Professor;
import spring.webapp.anmeldesystem.persistence.dao.FachbereichDao;
import spring.webapp.anmeldesystem.persistence.dao.KursDao;
import spring.webapp.anmeldesystem.persistence.dao.ProfessorDao;
import spring.webapp.anmeldesystem.service.ProfessorService;

/**
 * @author Songhua Cui
 * 
 */
@Service
@Transactional
public class ProfessorServiceImpl implements ProfessorService {

	@Autowired
	private ProfessorDao professorDao;
	@Autowired
	private FachbereichDao fachbereichDao;
	@Autowired
	private KursDao kursDao;

	/**
	 * @param email
	 * @return
	 */
	@Override
	public Professor getProfessorInformationen(String email) {
		Professor professor = professorDao.getProfessorbyEmail(email);
		addFachbereichToProfessor(professor);
		addKursToProfessor(professor);
		return professor;
	};

	private void addKursToProfessor(Professor professor) {
		ArrayList<String> kursIds = kursDao.getKursIdByProfessor(professor
				.getId());
		List<Kurs> kurses = new ArrayList<Kurs>();
		for (String kursId : kursIds) {
			Kurs kurs = kursDao.getKursById(kursId);
			kurses.add(kurs);
		}
		professor.setKurse(kurses);
	}

	private void addFachbereichToProfessor(Professor professor) {
		ArrayList<Long> fachbereichIds = fachbereichDao
				.getFachbereichIdByProfessor(professor.getId());
		List<Fachbereich> fachbereich = new ArrayList<Fachbereich>();
		for (long fachbereichId : fachbereichIds) {
			Fachbereich fb = fachbereichDao.getFachbereichById(fachbereichId);
			fachbereich.add(fb);
		}
		professor.setFachbereich(fachbereich);
	}
}
